9423
9967
Esta questão já tem respostas aqui:
Reverter uma string em Python
(29 respostas)
Fechado há 4 anos.
Estou tentando reverter uma string e usando o código abaixo, mas o valor da lista reversa resultante é Nenhum.
O código:
str_a = 'Isso está mexendo'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = '' .join (rev_word)
Ele retorna o TypeError. Por quê? 
.reverse () retorna Nenhum. Portanto, você não deve atribuí-lo a uma variável.
Em vez disso, use:
stra = 'Isto é uma string'
revword = stra.split ()
revword.reverse ()
revword = ''. join (revword)
Executei o código no IDEOne para você, para que possa ver a saída. (Observe também que a saída é stringaisThis; você pode usar '' .join (revword), com um espaço, em vez disso.)
Observe também que o método fornecido apenas inverte as palavras, não o texto. @ ron.rothman forneceu um link que detalha como reverter uma string em sua totalidade.
|
Esta é minha maneira favorita de inverter uma string:
stra = "Isto é uma string"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
ou, se quiser inverter a ordem das palavras:
revword = "" .join (stra.split () [:: - 1])
print (revword) # "string a é isto"
:)
|
Várias reversões em uma string:
instring = 'Isto é uma string'
reversedstring = instring [:: - 1]
print reversedstring # gnirts a si sihT
wordsreversed = '' .join (palavra [:: - 1] para palavra em instring.split ())
imprimir palavras revertidas # sihT si a gnirts
revwordorder = '' .join (palavra por palavra em instring.split () [:: - 1])
imprimir revwordorder # string a é este
revwordandorder = '' .join (palavra [:: - 1] para palavra em instring.split () [:: - 1])
imprimir revwordandorder # gnirts a si sihT
|
Para referência futura, quando um objeto tem um método como [] .reverse (), ele geralmente executa essa ação no objeto (ou seja, a lista é classificada e não retorna nada, Nenhum) em contraste com funções integradas como classificadas, que executam uma ação em um objeto e retorna um valor (ou seja, a lista classificada)
|
>>> s = 'isto é uma string'
>>> s [:: - 1]
'gnirts a siht'
>>> '' .join (invertido (s))
'gnirts a siht'
|
O loop for itera a string do final (última letra) ao início (primeira letra)
>>> s = 'Você também pode tentar isso:]'
>>> rev = ''
>>> para i no intervalo (len (s) - 1, -1, -1):
... rev + = s [i]
>>> rev
']: oot siht yrt nac uoY'
|
Com base em comentários e outras respostas:
str_a = 'isto é uma string'
rev_word = '' .join (invertido (str_a.split ()))
Afinal, o encadeamento de métodos funciona em Python ...
|
A reversão da lista pode ser feita de mais de uma maneira. Conforme mencionado nas respostas anteriores, dois são muito proeminentes, um com a função reverse () e dois com o recurso de fatiamento. Estou dando algumas dicas sobre qual devemos preferir.
Devemos sempre usar a função reverse () para reverter uma lista Python. Duas razões, uma reversão no local e duas mais rápidas que a outra.
Tenho alguns números para apoiar minha resposta,
Em [15]: len (l)
Fora [15]: 1000
Em [16]:% timeit -n1 l.reverse ()
1 loops, melhor de 3: 7,87 µs por loop
Em [17]:% timeit -n1 l [:: - 1]
1 loops, melhor de 3: 10 µs por loop
Para uma lista de 1000 inteiros, a função reverse () teve um desempenho melhor em comparação com o fatiamento.
|
Não é a resposta que você está procurando? Navegue por outras questões com a tag python ou faça sua própria pergunta.